package Memento;

public class MementoPatternDemo {

    /*
        备忘录模式: 在不破坏封装性的前提下,捕获一个对象的内部状态, 并在该对象之外保存这个状态.
        这样可以在以后将这个对象恢复到原先保存的状态.
     */

    public static void main(String[] args) {

        Originator originator = new Originator();
        Caretaker caretaker = new Caretaker();

        originator.setState("State --- 1");
        originator.setState("State --- 2");
        caretaker.add(originator.saveStateToMemento());  // 历史状态 1 , 就是一个 Memento对象
        System.out.println(" -------------------------- ");

        originator.setState("State --- 3");
        caretaker.add(originator.saveStateToMemento());  // 历史状态2 , 就是另一个 Memento对象
        System.out.println(" -------------------------- ");

        originator.setState("State --- 4");
        System.out.println("Current State: " + originator.getState());

        System.out.println(" ------ 历史 对象 ----------总存档: ");
        System.out.println(" 第一个 Memento 对象 " + caretaker.get(0) + " --- " + caretaker.get(0).getState());
        System.out.println(" 第二个 Memento 对象 " + caretaker.get(1) + " --- " + caretaker.get(1).getState());



    }
}
